import { stringify } from 'qs';
import request from '@/utils/request';

export async function queryProjectNotice() {
  return request('/api/project/notice');
}

export async function queryActivities() {
  return request('/api/activities');
}

export async function queryRule(params) {
  return request(`/api/rule?${stringify(params)}`);
}

export async function removeRule(params) {
  return request('/api/rule', {
    method: 'POST',
    data: {
      ...params,
      method: 'delete',
    },
  });
}

export async function addRule(params) {
  return request('/api/rule', {
    method: 'POST',
    data: {
      ...params,
      method: 'post',
    },
  });
}

export async function updateRule(params = {}) {
  return request(`/api/rule?${stringify(params.query)}`, {
    method: 'POST',
    data: {
      ...params.body,
      method: 'update',
    },
  });
}

export async function fakeSubmitForm(params) {
  return request('/api/forms', {
    method: 'POST',
    data: params,
  });
}

export async function fakeChartData() {
  return request('/api/fake_chart_data');
}

export async function queryBasicProfile(id) {
  return request(`/api/profile/basic?id=${id}`);
}

export async function queryAdvancedProfile() {
  return request('/api/profile/advanced');
}

export async function queryFakeList(params) {
  return request(`/api/fake_list?${stringify(params)}`);
}

export async function removeFakeList(params) {
  const { count = 5, ...restParams } = params;
  return request(`/api/fake_list?count=${count}`, {
    method: 'POST',
    data: {
      ...restParams,
      method: 'delete',
    },
  });
}

export async function addFakeList(params) {
  const { count = 5, ...restParams } = params;
  return request(`/api/fake_list?count=${count}`, {
    method: 'POST',
    data: {
      ...restParams,
      method: 'post',
    },
  });
}

export async function updateFakeList(params) {
  const { count = 5, ...restParams } = params;
  return request(`/api/fake_list?count=${count}`, {
    method: 'POST',
    data: {
      ...restParams,
      method: 'update',
    },
  });
}

export async function fakeAccountLogin(params) {
  return request('/api/login/account', {
    method: 'POST',
    data: params,
  });
}

export async function fakeRegister(params) {
  return request('/api/register', {
    method: 'POST',
    data: params,
  });
}

export async function queryNotices(params = {}) {
  return request(`/api/notices?${stringify(params)}`);
}

export async function getFakeCaptcha(mobile) {
  return request(`/api/captcha?mobile=${mobile}`);
}

/**
 * TODO:
 * teacherList Interface
 */
export async function queryTeacherList(params) {
  return request(`/api/teachers?${stringify(params)}`);
}
export async function removeTeacherList(params) {
  const { count = 5, ...restParams } = params;
  return request(`/api/teachers?count=${count}`, {
    method: 'POST',
    data: {
      ...restParams,
      method: 'delete',
    },
  });
}

export async function addTeacherList(params) {
  const { count = 5, ...restParams } = params;
  return request(`/api/teachers?count=${count}`, {
    method: 'POST',
    data: {
      ...restParams,
      method: 'post',
    },
  });
}

export async function updateTeacherList(params) {
  const { count = 5, ...restParams } = params;
  return request(`/api/teachers?count=${count}`, {
    method: 'POST',
    data: {
      ...restParams,
      method: 'update',
    },
  });
}

export async function queryTeacherDetail(id) {
  return request(`/api/teachers/detail?id=${id}`);
}

/**
 * TODO:
 * studentList Interface
 */
export async function queryStudentList(params) {
  return request(`/api/students?${stringify(params)}`);
}

export async function removeStudentList(params) {
  const { count = 5, ...restParams } = params;
  return request(`/api/students?count=${count}`, {
    method: 'POST',
    data: {
      ...restParams,
      method: 'delete',
    },
  });
}

export async function addStudentList(params) {
  const { count = 5, ...restParams } = params;
  return request(`/api/students?count=${count}`, {
    method: 'POST',
    data: {
      ...restParams,
      method: 'post',
    },
  });
}

export async function updateStudentList(params) {
  const { count = 5, ...restParams } = params;
  return request(`/api/students?count=${count}`, {
    method: 'POST',
    data: {
      ...restParams,
      method: 'update',
    },
  });
}

export async function queryStudentDetail(key) {
  return request(`/api/students/detail?key=${key}`);
}

export async function queryProcedure() {
  return request('/api/procedure/list');
}

export async function queryProcedureTodo() {
  return request('/api/procedure/todo');
}

export async function queryProcedureCompleted() {
  return request('/api/procedure/completed');
}

export async function queryProcedureProxy() {
  return request('/api/procedure/proxy');
}

export async function querySubjectResult() {
  return request('/api/subject/result');
}

export async function queryAttendanceHistory(params) {
  return request(`/api/attendance/history?${stringify(params)}`);
}
